import * as XLSX from 'xlsx'
import { saveAs } from 'file-saver'
const ExportToExcel = ({ data, fileName }: any) => {
    const exportToExcel = () => {
        const ws = XLSX.utils.json_to_sheet(data) // 将数据转换为工作表
        const wb = XLSX.utils.book_new() // 创建新的工作簿
        XLSX.utils.book_append_sheet(wb, ws, 'Sheet1') // 将工作表附加到工作簿中
        const wbout = XLSX.write(wb, { type: 'binary', bookType: 'xlsx' }) // 将工作簿写成二进制字符串
        function s2ab(s: string) {
            const buf = new ArrayBuffer(s.length) // 将字符串转换为数组缓冲区
            const view = new Uint8Array(buf) // 创建数组缓冲区的新的 Uint8Array 视图
            for (let i = 0; i !== s.length; ++i)
                view[i] = s.charCodeAt(i) & 0xff // 将字符串转换为数组缓冲区
            return buf // 返回数组缓冲区
        }
        saveAs(
            new Blob([s2ab(wbout)], { type: 'application/octet-stream' }),
            fileName + '.xlsx'
        ) // 将二进制字符串保存为文件
    }
    return <span onClick={exportToExcel}>导出数据</span>
}

export default ExportToExcel
